package sort;

/**
 * 选择排序, 时间复杂度N^2
 */
public class SelectSort {
    public static <E extends Comparable<E>> void sort(E[] array) {
        for (int i = 0; i < array.length; i++) {
            int minIndex = i;
            // 1. 找到最小的
            for (int j = i; j < array.length; j++) {
                if (array[j].compareTo(array[minIndex]) < 0) {
                    minIndex = j;
                }
            }
            // 2. 和已经有序的后面一位交换
            E tmp = array[i];
            array[i] = array[minIndex];
            array[minIndex] = tmp;
        }
    }
}